home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Support Library
/
RoseWare - Network Support Library.iso
/
apidev
/
basnet.arc
/
PRINTEST.BAS
< prev
next >
Wrap
BASIC Source File
|
1987-05-18
|
22KB
|
571 lines
10 '
20 ' PRINTEST.BAS
30 '
40 ' Allows testing of different printing techniques and methods
60 '
100 GOSUB 10000 'set up the network access and library calls
200 'MAIN MENU SELECTION
205 CLS
210 PRINT "************** MENU **************"
215 PRINT "1. Set spool flags (E0h(02h))
220 print "2. Set DEFAULT spool flags (B8h)
225 print "3. Modify list (LST) device method
230 print "4. Capture file method
235 print "5. Print an existing file method
236 PRINT "6. Print on multiple file servers
240 print "**********************************"
245 print
250 input "Select option: ",v%
255 on v% GOTO 300,1000,2000,3000,4000,5000
260 system
300 'SET THE SPOOL FLAGS
302 cls: FF%=0: DELFILE%=0: TABENABLE%=64: BANPAGE%=128: B$=STRING$(13,0)
303 TABS%=5: PTRNUM%=0: NUMCOPS%=1: FTYPE%=0: BTEXT$="SETSPL-TEST"
304 PRINT "******** SPOOL FLAGS WILL BE SET TO ********
310 PRINT "1. Auto form feed:
320 PRINT "2. Delete file after print:
330 PRINT "3. Enable tab expansion: "
340 PRINT "4. Print banner page: "
350 PRINT
360 PRINT "5. Tab size (1-20): "
370 PRINT "6. Network printer #: "
380 PRINT "7. Copies: "
390 PRINT "8. Form type: "
400 PRINT "9. Banner text (13 chars max):
410 PRINT "********************************************": PRINT
415 LOCATE 2,20: IF FF% = 0 THEN PRINT "YES" ELSE PRINT "NO "
416 LOCATE 3,29: IF DELFILE% = 0 THEN PRINT "NO " ELSE PRINT "YES"
417 LOCATE 4,26: IF TABENABLE% = 64 THEN PRINT "YES" ELSE PRINT "NO "
418 LOCATE 5,23: IF BANPAGE% = 128 THEN PRINT "YES" ELSE PRINT "NO "
419 LOCATE 7,21: PRINT TABS% SPC(20)
420 LOCATE 8,23: PRINT PTRNUM% SPC(20)
421 LOCATE 9,12: PRINT NUMCOPS% SPC(20)
422 LOCATE 10,15: PRINT FTYPE% SPC(20)
423 LOCATE 11,32: PRINT BTEXT$ SPC(20)
425 LOCATE 14,1: PRINT SPC(78): LOCATE 14,1
427 INPUT "Select setting to change, <enter> to exit, or 'S'et: ",v$
430 IF V$ = "" THEN GOTO 200
432 IF V$ <> "s" AND V$ <> "S" THEN GOTO 480
434 REQ$ = CHR$(2) + CHR$(FF%+DELFILE%+TABENABLE%+BANPAGE%) + CHR$(TABS%)
435 REQ$ = REQ$ + CHR$(PRTNUM%) + CHR$(NUMCOPS%) + CHR$(FTYPE%)
436 IF BTEXT$ <> "" THEN REQ$ = REQ$ + CHR$(0) + BTEXT$ + STRING$(13-LEN(BTEXT$),0) + CHR$(0)
437 REQ$ = CHR$(LEN(REQ$))+CHR$(0) + REQ$
438 REP$ = CHR$(0)+CHR$(0)
440 DEF SEG = LIBSEG
450 CALL SPLREQ(ERRCODE%,REQ$,REP$)
460 DEF SEG
470 IF ERRCODE% <> 0 THEN INPUT "Error setting spool flags. <enter> ",v$: goto 200
475 INPUT "SPOOL FLAGS SET!! <enter> ",v$: goto 200
480 V% = VAL(V$)
485 ON V% GOTO 500,520,540,560,600,700,800,900,950
490 GOTO 415
500 IF FF% = 8 THEN FF% = 0 ELSE FF% = 8
510 GOTO 415
520 IF DELFILE% = 32 THEN DELFILE% = 0 ELSE DELFILE% = 32
530 GOTO 415
540 IF TABENABLE% = 64 THEN TABENABLE% = 0 ELSE TABENABLE% = 64
550 GOTO 415
560 IF BANPAGE% = 128 THEN BANPAGE% = 0 ELSE BANPAGE% = 128
570 GOTO 415
600 LOCATE 16,1: INPUT "New tab size: ",TABS%
605 LOCATE 16,1: PRINT SPC(70)
610 IF TABS% < 1 OR TABS% > 20 THEN 600
620 GOTO 415
700 LOCATE 16,1: INPUT "Network printer #: ",PTRNUM%
720 LOCATE 16,1: PRINT SPC(70)" "
730 GOTO 415
800 LOCATE 16,1: INPUT "Number of copies to print: ",NUMCOPS%
820 LOCATE 16,1: PRINT SPC(70)""
830 GOTO 415
900 LOCATE 16,1: INPUT "Form type (0 - 255): ",ftype%
920 LOCATE 16,1: PRINT SPC(70)
930 GOTO 415
950 LOCATE 16,1: INPUT "Banner name (1-13 chars): ",BTEXT$
960 LOCATE 16,1: PRINT SPC(70)
970 GOTO 415
1000 ' SET DEFAULT SPOOL FLAGS
1001 ' FIRST GET THE CURRENT DEFAULT SETTINGS
1002 REQ$ = STRING$(25,0): MODE% = 0
1004 DEF SEG= LIBSEG
1006 CALL SETSPL(REQ$,MODE%)
1008 DEF SEG
1010 CLS
1012 IF ASC(MID$(REQ$,1,1)) = 0 THEN STAT$ = "ENABLED" ELSE STAT$ = "DISABLED"
1013 PF% = ASC(MID$(REQ$,2,1))
1014 FF% = PF% MOD 16
1015 DELFILE% = (PF% - FF%) MOD 64
1016 TABENABLE% = (PF% - FF% - DELFILE%) MOD 128
1017 BANPAGE% = (PF% \ 128) * 128
1018 TABS% = ASC(MID$(REQ$,3,1))
1019 PTRNUM% = ASC(MID$(REQ$,4,1))
1020 NUMCOPS% = ASC(MID$(REQ$,5,1))
1021 FTYPE% = ASC(MID$(REQ$,6,1))
1022 BTEXT$ = MID$(REQ$,8,13)
1023 LPTR% = ASC(MID$(REQ$,22,1))
1024 TOUT! = CVI(MID$(REQ$,23,2))
1025 DEVICE% = ASC(MID$(REQ$,25,1))
1030 PRINT "******** DEFAULT SPOOL FLAGS ARE (WILL BE) ********
1035 PRINT "1."
1040 PRINT
1045 PRINT "2. Auto form feed:
1050 PRINT "3. Delete file after print:
1055 PRINT "4. Enable tab expansion: "
1060 PRINT "5. Print banner page: "
1065 PRINT
1070 PRINT "6. Tab size (1-20): "
1075 PRINT "7. Network printer #: "
1080 PRINT "8. Copies: "
1085 PRINT "9. Form type: "
1090 PRINT "10. Banner text (13 chars max):
1095 PRINT "11. Local printer:"
1100 PRINT "12. Time out (1/18ths of seconds):"
1105 PRINT "13. Device close endspool:"
1110 PRINT "********************************************"
1115 LOCATE 2,4: PRINT STAT$ " "
1116 LOCATE 4,20: IF FF% = 0 THEN PRINT "YES" ELSE PRINT "NO "
1117 LOCATE 5,29: IF DELFILE% = 0 THEN PRINT "NO " ELSE PRINT "YES"
1118 LOCATE 6,26: IF TABENABLE% = 64 THEN PRINT "YES" ELSE PRINT "NO "
1119 LOCATE 7,23: IF BANPAGE% = 128 THEN PRINT "YES" ELSE PRINT "NO "
1120 LOCATE 9,21: PRINT TABS% SPC(20)
1121 LOCATE 10,23: PRINT PTRNUM% SPC(20)
1122 LOCATE 11,12: PRINT NUMCOPS% SPC(20)
1123 LOCATE 12,15: PRINT FTYPE% SPC(20)
1124 LOCATE 13,33: PRINT BTEXT$ SPC(20)
1125 LOCATE 14,20: PRINT LPTR% SPC(20)
1126 LOCATE 15,36: PRINT TOUT! SPC(20)
1127 LOCATE 16,28: IF DEVICE% = 0 THEN PRINT "YES" ELSE PRINT "NO "
1128 LOCATE 19,1: PRINT SPC(78): LOCATE 19,1
1129 INPUT "Select setting to change, <enter> to exit, or 'S'et: ",v$
1130 IF V$ = "" THEN GOTO 200
1132 IF V$ <> "s" AND V$ <> "S" THEN GOTO 1180
1133 IF STAT$ = "ENABLED" THEN REP$ = CHR$(0) ELSE REP$ = CHR$(1)
1134 REP$ = REP$ + CHR$(FF%+DELFILE%+TABENABLE%+BANPAGE%) + CHR$(TABS%)
1136 REP$ = REP$ + CHR$(PRTNUM%) + CHR$(NUMCOPS%) + CHR$(FTYPE%) + CHR$(0)
1137 REP$ = REP$ + BTEXT$ + STRING$(13-LEN(BTEXT$),0) + CHR$(0) + CHR$(LPTR%)
1138 REP$ = REP$ + CHR$(TOUT!\256) + CHR$(TOUT! MOD 256) + CHR$(DEVICE%)
1139 REP$ = CHR$(25)+CHR$(0) + REP$
1140 MODE% = 1
1145 DEF SEG = LIBSEG
1150 CALL SETSPL(REP$,MODE%)
1160 DEF SEG
1175 INPUT "DEFAULT SPOOL FLAGS SET!! <enter> ",v$
1176 goto 200
1180 V% = VAL(V$)
1185 ON V% GOTO 1200,1210,1220,1240,1260,1280,1300,1320,1340,1360,1380,1400,1420
1190 GOTO 1115
1200 IF STAT$ = "ENABLED" THEN STAT$ = "DISABLED" ELSE STAT$ = "ENABLED"
1205 GOTO 1115
1210 IF FF% = 8 THEN FF% = 0 ELSE FF% = 8
1215 GOTO 1115
1220 IF DELFILE% = 32 THEN DELFILE% = 0 ELSE DELFILE% = 32
1230 GOTO 1115
1240 IF TABENABLE% = 64 THEN TABENABLE% = 0 ELSE TABENABLE% = 64
1250 GOTO 1115
1260 IF BANPAGE% = 128 THEN BANPAGE% = 0 ELSE BANPAGE% = 128
1270 GOTO 1115
1280 LOCATE 21,1: INPUT "New tab size: ",TABS%
1283 LOCATE 21,1: PRINT SPC(70)
1286 IF TABS% < 1 OR TABS% > 20 THEN 600
1290 GOTO 1115
1300 LOCATE 21,1: INPUT "Network printer #: ",PTRNUM%
1305 LOCATE 21,1: PRINT SPC(70)" "
1310 GOTO 1115
1320 LOCATE 21,1: INPUT "Number of copies to print: ",NUMCOPS%
1325 LOCATE 21,1: PRINT SPC(70)""
1330 GOTO 1115
1340 LOCATE 21,1: INPUT "Form type (0 - 255): ",ftype%
1345 LOCATE 21,1: PRINT SPC(70)
1350 GOTO 1115
1360 LOCATE 21,1: INPUT "Banner name (1-13 chars): ",BTEXT$
1365 LOCATE 21,1: PRINT SPC(70)
1375 GOTO 1115
1380 LOCATE 21,1: INPUT "Local printer (LPT 1,2, or 3): ",lptr%
1385 LOCATE 21,1: PRINT SPC(70)
1390 GOTO 1115
1400 LOCATE 21,1: INPUT "Time out value (1/18ths of sec.): ",tout!
1405 LOCATE 21,1: PRINT SPC(70)
1410 GOTO 1115
1420 IF DEVICE% = 0 THEN DEVICE% = 1 ELSE DEVICE% = 0
1430 GOTO 1115
2000 'MODIFY LIST DEVICE OPTIONS
2010 CLS
2020 PRINT "*****************************************
2030 PRINT "1. Start list catch
2040 PRINT "2. Send data to list catch
2050 PRINT "3. End list catch and queue for printing
2060 PRINT "4. Abort list catch
2070 PRINT "*****************************************
2080 PRINT
2090 INPUT "Select option: ",v$
2100 IF V$ = "" THEN 200
2110 V% = VAL(V$)
2120 IF V% < 1 OR V% > 4 THEN 2000
2130 ON V% GOTO 2200,2300,2400,2500
2140 GOTO 2000
2200 DEF SEG = LIBSEG
2210 MODE% = 0
2220 CALL CTLSPL(MODE%)
2230 DEF SEG
2240 IF MODE% <> 0 THEN INPUT "...FAILED!!! <enter> ",v$: goto 2000
2250 INPUT "List catch has been started. <enter> ",v$
2260 GOTO 2000
2300 INPUT "Enter a print line (<enter> only when done): ",p$
2305 IF P$ = "" THEN 2000
2310 LPRINT P$
2320 GOTO 2000
2400 DEF SEG = LIBSEG
2410 MODE% = 1
2420 CALL CTLSPL(MODE%)
2430 DEF SEG
2440 IF MODE% <> 0 THEN INPUT "...FAILED!!! <enter> ",v$: goto 2000
2450 INPUT "List catch has been queued for print. <enter> ",v$
2460 GOTO 2000
2500 DEF SEG = LIBSEG
2510 MODE% = 2
2520 CALL CTLSPL(MODE%)
2530 DEF SEG
2540 IF MODE% <> 0 THEN INPUT "...FAILED!!! <enter> ",v$: goto 2000
2550 INPUT "List catch has aborted. <enter> ",v$
2560 GOTO 2000
3000 'CAPTURE FILE OPTIONS
3010 CLS
3020 PRINT "******************************************"
3030 PRINT "1. Create (open) a specified capture file
3040 PRINT "2. Send data to the capture file
3050 PRINT "3. Close and queue the capture file
3055 PRINT "4. Abort and delete the capture file
3060 PRINT "******************************************"
3070 PRINT
3080 INPUT "Select option: ",v$
3090 IF V$ = "" THEN GOTO 200
3100 V% = VAL(V$)
3110 IF V%<1 OR V%>4 THEN 3000
3120 ON V% GOTO 3200,3500,3700,3800
3200 'CREATE A CAPTURE FILE ON THE DEFAULT DRIVE
3201 'we need the current drive, since this program will only
3202 'create a file in the current directory or a sub directory
3203 DRIVE% = 0
3205 DEF SEG = LIBSEG
3207 CALL GETDRV(DRIVE%)
3209 DEF SEG
3210 'FIRST get the path base
3230 RETURNFLAGS% = 0
3240 DEF SEG = LIBSEG
3250 CALL DRVMAP(RETURNFLAGS%,DRIVE%)
3260 DEF SEG
3270 BASEFLAG% = RETURNFLAGS%/256 ' the base flag is the high byte of the return
3280 PATHBASE% = (RETURNFLAGS% - (BASEFLAG% * 256)) ' the path base is the low byte of the return
3290 PATHBASE$ = CHR$(PATHBASE%)
3300 PRINT: INPUT "Enter capture file name (will be on your default drive): ",captfile$
3310 FUNC$ = CHR$(9)
3350 CAPTLEN$ = CHR$(LEN(CAPTFILE$))
3360 HIPACLEN$ = CHR$(0)
3370 LOPACLEN$ = CHR$(3 + ASC(CAPTLEN$))
3380 ERRCODE% = 0
3390 REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + PATHBASE$ + CAPTLEN$ + CAPTFILE$
3400 REPLY$ = CHR$(0) + CHR$(0)
3410 DEF SEG = LIBSEG
3420 CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
3430 DEF SEG
3440 IF ERRCODE% <> 0 THEN INPUT "Unable to open the capture file. <enter> ",V$
3450 PRINT "Capture file opened successfully!"
3460 INPUT " <enter> ",v$
3470 GOTO 3000
3500 'SEND DATA TO THE CAPTURE FILE
3510 PRINT "Enter data to print: (<enter> only to exit)
3520 TEMPDATA$ = "*"
3560 WHILE LEN(TEMPDATA$) > 0
3565 LINE INPUT TEMPDATA$
3570 IF LEN(TEMPDATA$) > 255 THEN HIPACLEN$ = CHR$(1) ELSE HIPACLEN$ = CHR$(0)
3580 LOPACLEN$ = CHR$(1+LEN(TEMPDATA$))
3590 FUNC$ = CHR$(0)
3600 ERRCODE% = 0
3610 REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + TEMPDATA$
3620 REPLY$ = CHR$(0) + CHR$(0)
3630 DEF SEG = LIBSEG
3640 CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
3650 DEF SEG
3660 IF ERRCODE% <> 0 THEN INPUT "Unable to write to capture file. <enter>",v$
3680 WEND
3690 GOTO 3000
3700 ' CLOSE AND QUEUE THE CAPTURE FILE
3705 HIPACLEN$ = CHR$(0)
3710 LOPACLEN$ = CHR$(2)
3715 FUNC$ = CHR$(1)
3720 ABORTFLAG$ = CHR$(0)
3725 ERRCODE% = 0
3730 REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + ABORTFLAG$
3735 REPLY$ = CHR$(0) + CHR$(0)
3740 DEF SEG = LIBSEG
3745 CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
3750 DEF SEG
3755 IF ERRCODE% <> 0 THEN INPUT "Failed to close and queue the file. <enter>",v$: GOTO 3000
3757 INPUT "Capture file queued for printing. <enter> ",V$
3760 GOTO 3000
3800 'ABORT THE CAPTURE AND DELETE IT
3810 REQ$ = CHR$(2)+CHR$(0) + CHR$(0) + CHR$(255)
3815 REP$ = STRING$(2,0)
3820 DEF SEG = LIBSEG
3830 CALL SPLREQ(ERRCODE%, REQ$, REP$)
3840 DEF SEG
3845 IF ERRCODE% <> 0 THEN INPUT "Unable to abort!!! <enter> ",v$: GOTO 3000
3850 INPUT "CAPTURE FILE ABORTED. <enter> ",V$
3860 GOTO 3000
4000 'PRINT AN EXISTING FILE
4005 PRINT: LINE INPUT "Enter the file to print (must be on current drive): ",SPOOLTHIS$
4010 'we need the current drive, since this program will only
4020 'work for files in the current directory or a sub directory
4040 DRIVE% = 0
4050 DEF SEG = LIBSEG
4060 CALL GETDRV(DRIVE%)
4070 DEF SEG
4110 'now get the path base
4130 RETURNFLAGS% = 0
4140 DEF SEG = LIBSEG
4150 CALL DRVMAP(RETURNFLAGS%,DRIVE%)
4160 DEF SEG
4170 BASEFLAG% = RETURNFLAGS%/256 ' the base flag is the high byte of the return
4180 PATHBASE% = (RETURNFLAGS% - (BASEFLAG% * 256)) ' the path base is the low byte of the return
4190 PATHBASE$ = CHR$(PATHBASE%)
4210 ' now spool the file
4230 FUNC$ = CHR$(3)
4240 SPOOLLEN$ = CHR$(LEN(SPOOLTHIS$))
4250 HIPACLEN$ = CHR$(0)
4260 LOPACLEN$ = CHR$(3 + LEN(SPOOLTHIS$))
4270 ERRCODE% = 0
4280 REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + PATHBASE$ + SPOOLLEN$ + SPOOLTHIS$
4290 REPLY$ = CHR$(0) + CHR$(0)
4300 DEF SEG = LIBSEG
4310 CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
4320 DEF SEG
4330 IF ERRCODE% <> 0 THEN INPUT "Unable to spool the file. <enter>",V$: GOTO 3000
4340 INPUT "FILE PRINTED. <enter> ",V$
4350 GOTO 200
5000 ' first find out how many file servers we are attached to
5010 ' first we need to get the address of the server mapping table
5012 CLS
5014 PRINT "DO NOT RUN THIS OPTION AS PART OF ANY OF THE OTHERS."
5016 INPUT "IT PERFORMS ALL IT'S OWN SPOOLING STEPS - Continue? ",v$
5017 IF V$ <> "Y" AND V$ <> "y" THEN GOTO 200
5022 ' first we need to get the address of the server mapping table
5024 ' (Function Call EFh)
5026 MODE% = 3 'get server mapping table address function
5028 '
5030 DEF SEG = LIBSEG
5032 CALL GETSTA(MODE%, STSEGMENT%, STOFFSET%)
5033 MODE% = 4
5034 CALL GETSTA(MODE%,STSEGMENT%,NTOFF%)
5036 DEF SEG = STSEGMENT%
5037 '
5038 ' Now we will display the table contents for demo purposes
5040 PRINT "Server mapping table contents:": PRINT
5042 FOR I = 0 TO 7
5044 PRINT I+1,;
5046 FOR X = 0 TO 13
5048 PRINT RIGHT$("00"+HEX$(PEEK(STOFFSET% + (32*I) + X)),2);
5050 NEXT X
5051 PRINT SPC(3);
5052 FOR X = 0 TO 19
5053 A$ = CHR$(PEEK(NTOFF% + (I*48) + X))
5054 IF A$ = CHR$(0) THEN X = 19 ELSE PRINT A$;
5055 NEXT X
5056 PRINT
5057 NEXT I
5058 PRINT
5220 MODE% = 3 'get server mapping table address function
5230 DEF SEG = LIBSEG
5240 CALL GETSTA(MODE%, STSEGMENT%, STOFFSET%)
5250 DEF SEG
5260 ' now check the table entries to see if they are in use and if they match our target
5270 DEF SEG = STSEGMENT%
5280 ENTRY% = 0
5290 DRIVE1% = PEEK(STOFFSET% + (32 * ENTRY%))
5300 ENTRY% = 1
5310 DRIVE2% = PEEK(STOFFSET% + (32 * ENTRY%))
5320 ENTRY% = 2
5330 DRIVE3% = PEEK(STOFFSET% + (32 * ENTRY%))
5340 ENTRY% = 3
5350 DRIVE4% = PEEK(STOFFSET% + (32 * ENTRY%))
5360 ENTRY% = 4
5370 DRIVE5% = PEEK(STOFFSET% + (32 * ENTRY%))
5380 ENTRY% = 5
5390 DRIVE6% = PEEK(STOFFSET% + (32 * ENTRY%))
5400 ENTRY% = 6
5410 DRIVE7% = PEEK(STOFFSET% + (32 * ENTRY%))
5420 ENTRY% = 7
5430 DRIVE8% = PEEK(STOFFSET% + (32 * ENTRY%))
5440 DEF SEG
5500 ' now send data to each file server which is attached
5510 IF DRIVE1% = 255 THEN DRIVE% = 1: GOSUB 9000
5520 IF DRIVE2% = 255 THEN DRIVE% = 2: GOSUB 9000
5530 IF DRIVE3% = 255 THEN DRIVE% = 3: GOSUB 9000
5540 IF DRIVE4% = 255 THEN DRIVE% = 4: GOSUB 9000
5550 IF DRIVE5% = 255 THEN DRIVE% = 5: GOSUB 9000
5560 IF DRIVE6% = 255 THEN DRIVE% = 6: GOSUB 9000
5570 IF DRIVE7% = 255 THEN DRIVE% = 7: GOSUB 9000
5580 IF DRIVE8% = 255 THEN DRIVE% = 8: GOSUB 9000
5590 PRINT "All Servers have had your messages spooled to them. Check it out!"
5600 PRINT
5610 INPUT "<enter> ";re$
5620 GOTO 200
9000 '
9005 ' first set the preferred file server
9010 MODE% = 0 'mode to set the preferred file server
9020 DEF SEG = LIBSEG
9030 CALL SETSERV(MODE%,DRIVE%,CURRENTSERVER%)
9040 DEF SEG
9200 '
9210 ' set the spool flags
9220 '
9230 LOPACLEN$ = CHR$(6)
9240 HIPACLEN$ = CHR$(0)
9250 FUNC$ = CHR$(2)
9260 PRINTFLAG$ = CHR$(224)
9270 TABSIZE$ = CHR$(5)
9280 TARGETPRINTER$ = CHR$(0)
9290 NUMBERCOPIES$ = CHR$(1)
9300 FORMTYPE$ = CHR$(0)
9310 ERRCODE% = 0
9320 REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + PRINTFLAG$ + TABSIZE$ + TARGETPRINTER$ + NUMBERCOPIES$ + FORMTYPE$
9330 REPLY$ = CHR$(0) + CHR$(0)
9340 DEF SEG = LIBSEG
9350 CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
9360 DEF SEG
9370 IF ERRCODE% <> 0 THEN PRINT "Error setting spool flags.":STOP
9400 '
9410 ' send the data to a spool file
9420 '
9430 PRINT "Enter a print line to print on the server in table entry "DRIVE%
9431 INPUT TEMPDATA$
9435 PRINT
9440 HIPACLEN$ = CHR$(0)
9450 LOPACLEN$ = CHR$(1 + LEN(TEMPDATA$))
9460 FUNC$ = CHR$(0)
9470 ERRCODE% = 0
9480 REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + TEMPDATA$
9490 REPLY$ = CHR$(0) + CHR$(0)
9500 DEF SEG = LIBSEG
9510 CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
9520 DEF SEG
9530 IF ERRCODE% <> 0 THEN PRINT "Unable to write to capture file.": STOP
9600 '
9610 ' close and queue the file
9620 '
9630 HIPACLEN$ = CHR$(0)
9640 LOPACLEN$ = CHR$(2)
9650 FUNC$ = CHR$(1)
9660 ABORTFLAG$ = CHR$(0)
9670 ERRCODE% = 0
9680 REQUEST$ = LOPACLEN$ + HIPACLEN$ + FUNC$ + ABORTFLAG$
9690 REPLY$ = CHR$(0) + CHR$(0)
9700 DEF SEG = LIBSEG
9710 CALL SPLREQ(ERRCODE%, REQUEST$, REPLY$)
9720 DEF SEG
9730 IF ERRCODE% <> 0 THEN PRINT "Failed to close and queue the file."
9800 ' restore the original preferred file server
9810 MODE% = 0 'mode to set the preferred file server
9820 DEF SEG = LIBSEG
9830 CALL SETSERV(MODE%,CURRENTSERVER%,LASTSERVER%)
9840 DEF SEG
9999 RETURN
10000 '
10010 ' routines for network use
10020 '
10100 ' This file contains the routine names and
10101 ' offsets for the BASNET library
10110 XTNDOPN = 0 'xtndopn(Mode%, Filename$, Handle%, ErrCode%)
10111 SETATTR = 3 'setattr(Func%, Filename$, Attribute%, ErrCode%)
10112 EOJSTAT = 6 'eojstat(Flag%)
10113 PRLH.LOG = 9 'PRLH.Log(FileHandle%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
10114 PRLH.REL = 12 'PRLH.Rel(FileHandle%,HiByteOffset%,LoByteOffset%,ErrCode%)
10115 PRLH.CLR = 15 'PRLH.Clr(FileHandle%,HiByteOffset%,LoByteOffset%,Errcode%)
10116 PRLF.LOG = 18 'PRLF.Log(fcb%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
10117 PRLF.REL = 21 'PRLF.Rel(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
10118 PRLF.CLR = 24 'PRLF.Clr(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
10119 PRLS.LCK = 27 'PRLS.Lck(Flags%,TimeOut%,ErrCode%)
10120 PRLS.REL = 30 'PRLS.Rel(ErrCode%)
10121 PRLS.CLR = 33 'PRLS.Clr(ErrCode%)
10122 OPENSEM = 36 'OpenSem(Sema4$,SemaValu%,HiHandle%,LoHandle%,OpenCnt%,RetCode%)
10123 EXAMSEM = 39 'ExamSem(HiHandle%,LoHandle%,SemaValu%,OpenCnt%,RetCode%)
10124 WAITSEM = 42 'WaitSem(HiHandle%,LoHandle%,TimeOut%,RetCode%)
10125 SIGSEM = 45 'SigSem(HiHandle%,LoHandle%,RetCode%)
10126 CLOSSEM = 48 'ClosSem(HiHandle%,LoHandle%,RetCode%)
10127 SETLCK = 51 'setlck(Func%,Mode%)
10128 BAKOUTS = 54 'Bakouts(Func%,RetCode%)
10129 BTRANS = 57 'btran(ReturnCode%, Mode%)
10130 ETRANS = 60 'etrans(ReturnCode%)
10131 EXCLOG = 63 'exclog(ReturnCode%, FcbAddr)
10132 EXCLCKS = 66 'exclcks(ReturnCode%, Mode%)
10133 EXCULKF = 69 'exculkf(ReturnCode%, FcbAddr)
10134 EXCULKS = 72 'exculks(ReturnCode%)
10135 EXCCLRF = 75 'excclrf(ReturnCode%, FcbAddr)
10136 EXCCLRS = 78 'excclrs(ReturnCode%)
10137 RECLOG = 81 'reclog(ReturnCode%, String$)
10138 RECLCK = 84 'reclck(ReturnCode%, Mode%)
10139 RECULK = 87 'reculk(ReturnCode%, Semaphore$)
10140 RECULKS = 90 'reculks(ReturnCode%)
10141 RECCLR = 93 'recclr(ReturnCode%, Semaphore$)
10142 RECCLRS = 96 'recclrs(ReturnCode%)
10143 EOJ = 99 'eoj(ReturnCode%)
10144 SYSOUT = 102 'sysout(ReturnCode%)
10145 ALLOCR = 105 'allocr(ReturnCode%, Resource%)
10146 DALLOCR = 108 'dallocr(ReturnCode%, Resource%)
10147 VOLSTAT = 111 'volstat(volume%, reply$)
10148 LOCDRV = 114 'locdrv(NumDisks%)
10149 WSID = 117 'wsid(ThisStationNum%)
10150 ERRMODE = 120 'errmode(mode%)
10151 BCSMODE = 123 'bcsmode(mode%)
10152 CTLSPL = 126 'ctlspl(mode%)
10153 SPLREQ = 129 'splreq(ErrCode%, RequestBlock$, Reply$)
10154 PIPREQ = 132 'pipreq(ErrCode%, RequestBlock$, Reply$)
10155 DPATH = 135 'dpath(ReturnCode%, RequestBlock$, Reply$)
10156 SYSLOG = 138 'syslog(ReturnCode%, RequestBlock$, Reply$)
10157 FATTR = 141 'fattr(ReturnCode%, FcbAddr, Attribute%)
10158 UPDFCB = 144 'updfcb(RetCode%,FcbAddr)
10159 CPYFILE = 147 'cpyfile(ReturnCode%, FcbSource, FcbDest, CountLow, CountHigh)
10160 NETTOD = 150 'nettod(time$)
10161 CLSMODE = 153 'clsmode(mode%)
10162 DRVMAP = 156 'drvmap(ReturnFlags%, drive%)
10163 RETSHL = 159 'retshl(RetCode%, Mode%)
10164 ASCLOG = 162 'asclog(RetCode%, Asciiz$)
10165 ASCULKF = 165 'asculkf(RetCode%, Asciiz$)
10166 ASCCLRF = 168 'ascclrf(RetCode%, Asciiz$)
10167 GETPSN = 171 'Get_PSN(StationNo%)
10168 GETSTA = 174 'Get_STA(Mode%,Segment%,Offset%)
10169 SETSERV = 177 'SetServ(Mode%,NewServ%,CurrServ%)
10170 MODSERV = 180 'ModServ(Mode%,NewServ%,RetCode%)
10171 GETDRV = 183 'GetDrv(Drive%)
10172 SETSPL = 186 'setspl(Request$,mode%)
10173 LOGLCK = 189 'loglck(
10200 '
10210 ' Assign the segment address for the library to the variable LibSeg
10220 DEF SEG = 0
10230 SUBOFF = PEEK(&H4F0)+(256*PEEK(&H4F1))
10240 SUBSEG = PEEK(&H4F2)+(256*PEEK(&H4F3))
10250 LIBSEG = SUBSEG
10400 '
10410 ' set the error mode so its more informative
10420 DEF SEG = LIBSEG
10430 NEWMODE% = 1
10440 CALL ERRMODE(NEWMODE%)
10450 DEF SEG
10999 RETURN